Demodulation technique for GFSK and DPSK

ABSTRACT

A technique for low-complexity high-performance coherent demodulation of GFSK signals involves utilizing a novel phase and frequency tracking mechanism coupled with a trellis search technique to track signal memory in the demodulation process. A method according to the technique may include modeling modulation based upon a trellis. The method may further include estimating unknown parameters, selecting a maximum likelihood path through the trellis, and mapping the maximum likelihood path to an output bit sequence. The technique is also applicable to DSPK and other applicable known or convenient protocols.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application 60/797,956, entitled Multimedia Cell Platform, filed May 4, 2006, and to U.S. Provisional Application 60/810,036, entitled Time Multiplexing Antenna Diversity System, filed May 31, 2006, both of which are incorporated herein by reference.

BACKGROUND

Phase-shift keying (PSK) is a digital modulation scheme that conveys data by changing, or modulating, the phase of a reference signal (the carrier wave). Any digital modulation scheme uses a finite number of distinct signals to represent digital data. PSK uses a finite number of phases. The demodulator, which is designed specifically for the symbol-set used by the modulator, determines the phase of the received signal and maps it back to the symbol it represents, thus recovering the original data. This requires the receiver to be able to compare the phase of the received signal to a reference signal-such a system is termed coherent.

Alternatively, instead of using the bit patterns to set the phase of the wave, the bit patterns can instead be used to change the phase of the wave by a specified amount. The demodulator then determines the changes in the phase of the received signal rather than the phase itself. Since this scheme depends on the difference between successive phases, it is termed differential phase-shift keying (DPSK). DPSK can be significantly simpler to implement than ordinary PSK since there is no need for the demodulator to estimate the reference signal to determine the exact phase of the received signal (it is a non-coherent scheme). In exchange, it sometimes produces more erroneous demodulations. The exact requirements of the particular scenario under consideration determine which scheme is used.

Gaussian Frequency Shift Keying (GFSK) is a type of Frequency Shift Keying modulation that utilizes a Gaussian filter to smooth positive/negative frequency deviations, which represent a binary 1 or 0. GFSK and DPSK are used in Bluetooth radios. GFSK is also used in the cordless Digital Enhanced Cordless Telecommunications (DECT) phone standard and the cellular Global System for Mobile Communications (GSM) standard, along with the GSM enhancements for High Speed Circuit Switched Data (HSCSD) and Enhanced Data Rates for GSM Evolution (EDGE). GFSK is also used by Cypress Wireless USB, Nordic Semiconductor, and z-wave devices.

The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings.

SUMMARY

The following embodiments and aspects thereof are described and illustrated in conjunction with systems, tools, and methods that are meant to be exemplary and illustrative, not limiting in scope. In various embodiments, one or more of the above-described problems have been reduced or eliminated, while other embodiments are directed to other improvements.

Gaussian frequency shift keying (GFSK) modulation is a modulation whereby the information bits are embedded in the frequency or phase of the transmitted signal, which makes the signal less susceptible to amplitude nonlinearities introduced by the channel and/or receiver hardware. GFSK is typically implemented as a form of frequency modulation (FM), in which case it is a modulation format with memory. GFSK is typically demodulated incoherently to reduce receiver complexity, but this can result in a 2-3 dB degradation in performance relative to a coherent demodulation where the phase and frequency of the signal is tracked. A technique for low-complexity high-performance coherent demodulation of GFSK signals involves utilizing a novel phase and frequency tracking mechanism coupled with a trellis search technique to track signal memory in the demodulation process.

A method according to the technique may include modeling modulation based upon a trellis. The method may further include estimating unknown parameters, selecting a maximum likelihood path through the trellis, and mapping the maximum likelihood path to an output bit sequence.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the inventions are illustrated in the figures. However, the embodiments and figures are illustrative rather than limiting; they provide examples of the inventions.

FIG. 1 depicts a flowchart of an example of a method for detecting transmitted data with low complexity.

FIG. 2 depicts an example of a trellis diagram for GFSK with 2p states.

FIG. 3 depicts a flowchart of an example of a demodulation process based on phase/frequency tracking and a trellis search.

FIGS. 4A and 4B depict flowcharts of examples of methods for reducing ML detector complexity through per-survivor processing.

FIG. 5 depicts a diagram of an example of mapping an ML path to bit estimates.

FIG. 6 depicts a diagram of an example of a trellis and survivor path computation between the i−1th and ith stage.

FIGS. 7A and 7B depict flowcharts of examples of methods for reducing ML detector complexity through per-survivor processing.

DETAILED DESCRIPTION

In the following description, several specific details are presented to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or in combination with other components, etc. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of various embodiments of the invention.

In GFSK, past bit transmissions are embedded in the signal phase associated with the current bit period T. Specifically, the transmitted signal at time t has constant amplitude and a phase equal to θ(t,a)=2πƒ_(c)t+φ(t,a), where ƒ_(c) is the carrier frequency and φ(t,a) is the information carrying phase given by

${\phi\left( {t,a} \right)} = {2\pi\; h{\sum\limits_{i = 0}^{L - 1}\;{{a\lbrack i\rbrack}{q\left( {t - {iT}} \right)}}}}$ for h the modulation index, a[i]ε{+1,−1} the polar representation of the binary data bits, L the length of the signal memory, T the bit period, and q(t) the phase response. The memory in the information carrying phase is of length L−1, since at time t the phase depends on the current data bit as well as the previous L−1 data bits. The phase response is the integral of the frequency response g(t), i.e.

${{q(t)} = {\frac{1}{2}{\int_{- \infty}^{t - T}{{g\ (\beta)}{\mathbb{d}\beta}}}}},$ where g(t)=u(t)*h_(g)(t) is the convolution of a rectangular pulse u(t) and a Gaussian pulse h_(g)(t).

If the signal is down converted using a frequency

${f_{0\;} = {f_{c} - \frac{h}{2T}}},$ then the complex baseband received signal becomes r(t)=s(t)e^(jφ(t))+n(t)=e^(jψ(t,b))e^(jφ(t))+n(t), where s(t) is the complex baseband transmitted signal, n(t) is the complex baseband noise of the received signal, ψ(t,b) is the demodulated phase of the signal given by

${\psi\left( {t,b} \right)} = {{{\theta\left( {t,b} \right)} - {2\pi\; f_{0}}} = {{{\phi\left( {t,b} \right)} + {\frac{\pi\; h}{T}t{for}\mspace{14mu}{b\lbrack i\rbrack}}} = {{0.5\left( {{a\lbrack i\rbrack} + 1} \right)} \in \left\{ {0,1} \right\}}}}$ the binary representation of the data, and φ(t)=φ₀+2πΔ_(ƒ)t is the time-varying phase offset of the received signal, which depends on a fixed phase offset φ₀ and a frequency offset Δ_(ƒ), and is thus independent of the data.

The complex baseband transmitted signal can be written as

${{s(t)} = {\sum\limits_{i = 0}^{L}\;{\rho_{m_{i}}\left( {t - {i\; T}} \right)}}},{where}$ ${\rho_{m_{i}}(t)} = \left\{ {\begin{matrix} {{s\left( {t + {i\; T}} \right)} = {\mathbb{e}}^{j\;{\psi{({{t + {i\; T}},b})}}}} & {0 < t \leq T} \\ 0 & {otherwise} \end{matrix}.} \right.$

A technique for detecting transmitted data with low complexity involves estimating unknown parameters and then using them in a trellis search to estimate the transmitted data. The trellis may or may not be a reduced state trellis.

FIG. 1 depicts a flowchart 100 of an example of a method for detecting transmitted data with low complexity. The method is organized as a sequence of modules in the flowchart 100. However, it should be understood that these and modules associated with other methods described herein may be reordered for parallel execution or into different sequences of modules. In the example of FIG. 1, the flowchart 100 starts at module 102 with modeling modulation based upon a trellis. The modeling may or may not be accomplished in real time. For example, the modeling may take place beforehand, and the remaining modules (104-108) of the flowchart 100 may take place in real-time or near-real-time.

In the example of FIG. 1, the flowchart 100 continues to module 104 where unknown parameters are estimated. In an illustrative embodiment, it is assumed that both the phase offset φ₀ and/or the frequency offset Δ_(ƒ) in the received signal are unknown. Let {circumflex over (φ)}₀ and {circumflex over (Δ)}_(ƒ) denote the estimates for the phase offset φ₀ and frequency offset Δ_(ƒ), respectively. These estimates may be obtained from estimation algorithms applied to training sequences or preambles in the data prior to demodulation, data-driven estimation as described later with reference to FIGS. 3, 4A, 4B, 7A, and 7B, or using other applicable known or convenient estimation techniques.

A modulation index may or may not need to be approximated. For example, the modulation index could be either explicit, approximated, or obviated. In an illustrative embodiment, a state trellis search is based on some approximations that allow a simple characterization, and hence detection, of the transmitted signal. For example, where k and p are relative primes a modulation index h=k/p can be approximated. Advantageously, as described later, restricting the modulation index to these values allows coherent maximum-likelihood demodulation through a recursive updating of just a few parameters. As an example of a way to simplify the expression for the signal phase, q(2T)=0.5 can also be approximated. With these approximations ρ_(m) _(i) (τ) corresponds to exactly 2p possible signals and we can write the phase over a given bit time in terms of the current and past bits as

ψ(τ + (n − 1)T, b) = 2π h(d[n − 2] + ω(τ, b[n − 1], b[n])), where ${{{d\left\lbrack {n - 2} \right\rbrack} = {{R_{p}\left\lbrack {\sum\limits_{i = 0}^{n - 2}\;{b\lbrack i\rbrack}} \right\rbrack} \in \left\{ {0,1,\ldots\mspace{11mu},{p - 1}} \right\}}},{{for}\mspace{14mu}{R_{p}\lbrack c\rbrack}\mspace{14mu}{the}\mspace{14mu}{modulo}\mspace{14mu} p\mspace{14mu}{operator}\mspace{14mu}{and}}}\mspace{14mu}$ $\begin{matrix} {{\omega\left( {\tau,{b\left\lbrack {n - 1} \right\rbrack},{b\lbrack n\rbrack}} \right)} = {{2{b\left\lbrack {n - 1} \right\rbrack}{q\left( {\tau + T} \right)}} + {2{b\lbrack n\rbrack}{q(\tau)}} +}} \\ {\frac{\tau}{\;{2\; T}} - {q\left( {\tau + T} \right)} - {q(\tau)} + {\frac{1}{\; 2}.}} \end{matrix}$

In the example of FIG. 1, the flowchart 100 continues to module 106 where a maximum-likelihood path through a trellis is selected. Note that there are only four different values for ω(τ,b[n−1],b[n]) and also that the phase is slightly different over the first bit time and the last bit time due to the lack of a previous bit for the first bit time and the lack of a subsequent bit for the last bit time. The phase of a received signal over any bit period (n−1)T≦t<nT depends only on d[n−2], b[n−1], and b[n], i.e. on the current and immediately previous data bit values (when present) as well d[n−2], which captures the n−2 bit values prior to b[n−1]. Since d[n−2] has p possible values and b[n−1] has two possible values, we can simplify detection by modeling the transmitted bit sequence as a path through a trellis with 2p states (corresponding to the possible joint values of d[n−2] and b[n−1]) at the nth trellis stage. Since the trellis state corresponds to the values of d[n−2] and b[n−1], it captures all the memory of past bit transmissions in the current bit transmission b[n]. The transition from the trellis state at the (n−1)th stage to the nth stage is determined by whether b[n] is a 0 or 1 bit, as depicted in FIG. 2. Thus, given a path through the trellis that is selected as the maximum-likelihood path based on the received signal, the maximum-likelihood bit decision {tilde over (b)}[n] is determined by the transition from Stage n−1 to Stage n.

In the example of FIG. 1, the flowchart 100 continues to module 108 where the maximum likelihood path is mapped to an output bit sequence. Having provided low complexity detection of transmitted data, the flowchart 100 ends.

FIG. 2 depicts an example of a trellis diagram 200 for GFSK with 2p states. The number of states (i.e., 2p) is based upon d[n−2] and b[n−1], as described previously.

FIG. 3 depicts a flowchart 300 of an example of a demodulation process based on phase/frequency tracking and a trellis search. In the example of FIG. 3, the flowchart 300 starts at module 302 with sampling a signal. In an illustrative embodiment, the received signal is sampled N times over a bit period, where N is a design parameter with a minimum value of 1 (1 sample per bit period). For the received signal over the ith bit period, these samples are averaged to obtain

${r\lbrack i\rbrack} = {\frac{1}{N}{\sum\limits_{k = 0}^{N - 1}\;{{r\left( {\left( {i + {k/N}} \right)T} \right)}.}}}$

In the example of FIG. 3, the flowchart 300 continues to module 304 where estimates for phase parameters are updated. The phase parameters may include, by way of example but not limitation, phase and frequency offsets. The demodulation process for a sequence of L transmitted bits proceeds as follows. Over each bit time iT the received signal is used to compute r[i] and obtain estimates for the phase and frequency offsets, {circumflex over (φ)}₀[i] and {circumflex over (Δ)}_(ƒ)[i], respectively. These estimates may be obtained, by way of example but not limitation, from a preamble prior to bit transmission, through maximum-likelihood or maximum a posteriori estimation, or through a recursive updating at each bit time based on prior estimates and the received signal over the ith bit period. The recursive update can be simplified by making it a function of r[i] instead of the entire received signal over the ith bit time.

In the example of FIG. 3, the flowchart 300 continues to module 306 where a function associated with bits received up to the current time is computed. A sampled average for ρ[m_(i)(t)] over the ith bit period is given by

${\rho\left\lbrack m_{i\;} \right\rbrack} = {\frac{1}{N}{\sum\limits_{k = 0}^{N - 1}\;{{\rho\left( {\left( {i + {k/N}} \right)T} \right)}.}}}$ Note that ρ[m_(i)] can be rewritten as

${\rho\left\lbrack m_{i\;} \right\rbrack} = {{\mathbb{e}}^{{j2\pi}\;{{hv}_{i}{\lbrack 1\rbrack}}}{\sum\limits_{k = 0}^{N}{\mathbb{e}}^{{j2\pi}\; h\;\omega\;{({{{kT}/N},{v_{i}{\lbrack 2\rbrack}},{v_{i}{\lbrack 3\rbrack}}})}}}}$ for v_(i)=[v_(i)[1],v_(i)[2],v_(i)[3]]=[d[i−2],b[i−1],b[i]]. Thus, we can express ρ[m_(i)] in terms of the ith data bit and the state of the trellis shown in FIG. 2 at stage i.

In the example of FIG. 3, the flowchart 300 continues to module 308 where a trellis state that maximizes the metric is found. Assuming the time-varying phase offset φ(t) over bit time iT is accurately estimated by {circumflex over (φ)}(t)={circumflex over (φ)}₀[i]+2π{circumflex over (Δ)}_(ƒ)[i]t, we approximate the maximum-likelihood (ML) detector for the L transmitted data bits by, at time i, choosing the {tilde over (m)}_(i) (or, equivalently, the trellis path at time i) to maximize the metric

${{\Lambda\left\lbrack {L - 1} \right\rbrack} = {{Re}\left\{ {\sum\limits_{i = 0}^{L - 1}\;{{r\lbrack i\rbrack}{\rho^{*}\left\lbrack {\overset{\sim}{m}}_{i} \right\rbrack}{\mathbb{e}}^{- {j{({{{\hat{\phi}}_{0}{\lbrack i\rbrack}} + {2\pi{{\hat{\Delta}}_{f}{\lbrack i\rbrack}}{iT}}})}}}}} \right\}}},$ where ρ*[{tilde over (m)}_(i)] denotes the complex conjugate of ρ[{tilde over (m)}_(i)].

It should be noted that, in an illustrative embodiment, metrics are computed at each stage, but the bit decisions can be made at each stage, or the decision can be delayed until all of the computations, at each stage, have been made. Waiting until the end to maximize the metric and output the corresponding bits introduces delay, but can result in a more optimal path, which tends to improve performance. Performing the maximization at each time i and outputting the bits associated with the trellis path with the maximum metric at time i, on the other hand, has the advantage of reduced delay and lower memory requirements.

In the example of FIG. 3, the flowchart 300 ends at module 310 where an estimate for the transmitted data based on the trellis state that maximizes the metric is determined. In an illustrative embodiment, {tilde over (m)}_(i) is mapped for i=1, . . . , L to {tilde over (b)}[0], . . . , {tilde over (b)}[L−1]. The detected data is thus a sequence {tilde over (b)}[0], . . . , {tilde over (b)}[L−1] that maximizes the maximum-likelihood metric Λ[i] for each time i, or at time L−1 at the end of the sequence of bit transmissions.

FIGS. 4A and 4B depict flowcharts of examples of methods for reducing ML detector complexity through per-survivor processing. The complexity and memory requirements of the ML detector corresponding to the metric, Λ[L−1], can be substantially reduced through per-survivor processing. This reduces the number of states in the trellis of FIG. 2 from 2p to 2.

FIG. 4A is intended to show per-survivor processing where output is at the end of the process. In the example of FIG. 4A, the flowchart 400A starts at module 402 where a trellis stage is initialized to −1.

In the example of FIG. 4A, the flowchart 400A continues to module 404 where the trellis stage is incremented. Over the ith bit time we compute d[i−2] based on past bit decisions up until time i−2. If d[i−2] is fixed then the current bit decision only depends on this fixed value and the 2 possible values for the previous bit value b[i−1]. Hence the trellis to determine b[i] has just 2 states, which we will denote as states 0 and 1. For this trellis let μ_(y)[i]ε{0,1} denote the start state of the survivor path in trellis section i that ends in state yε{0,1}.

In the example of FIG. 4A, the flowchart 400A continues to module 405 where the received signal is sampled and averaged. For the received signal over the Rh bit period, the samples are averaged to obtain

${r\lbrack i\rbrack} = {\frac{1}{N}{\sum\limits_{k = 0}^{N - 1}\;{{r\left( {\left( {i + {k/N}} \right)T} \right)}.}}}$

In the example of FIG. 4A, the flowchart 400A continues to module 407 where time-varying phase parameters are estimated. The time-varying phase parameters may include, by way of example but not limitation, the phase offset and/or frequency offset. Thus, in an illustrative embodiment, over bit period iT the phase and frequency offsets {circumflex over (φ)}₀[i] and {circumflex over (Δ)}_(ƒ)[i] are estimated. It may be noted that the time-varying phase parameters are not affected by data values, but rather by hardware variations, temperature, propagation environment, and/or other factors.

In the example of FIG. 4A, the flowchart 400A continues to module 409 where complex data functions are updated.

In the example of FIG. 4A, the flowchart 400A continues to module 410 where a metric is computed based on recursive updates of data functions and the time-varying phase parameters. The total metric for the branch ending in state y after trellis section i can then be updated recursively as Λ_(y)[i]=max_(xε{0,1})Λ_(x)[i−1]+λ_(x→y)[i], where λ_(x→y)[i] is the branch metric for the branch going from state x to state y in trellis section i. This recursive update indicates that there will be only one surviving path into each state yε{0,1} of the trellis at stage i, which will correspond to the path between x and y for the x achieving the maximum Λ_(y)[i]. The branch metric λ_(x→y)[i] is given by

$\begin{matrix} {{\lambda_{x->y}\lbrack i\rbrack} = {{Re}\left\{ {{r\lbrack i\rbrack}{\rho^{*}\left\lbrack {\overset{\sim}{m}}_{i} \right\rbrack}{\mathbb{e}}^{- {j{({{{\hat{\phi}}_{0}{\lbrack i\rbrack}} + {2\;\pi\;{{\hat{\Delta}}_{f}{\lbrack i\rbrack}}i\; T}})}}}} \right\}}} \\ {{= {{Re}\left\{ {{r\lbrack i\rbrack}{\mathbb{e}}^{{- {j2}}\;\pi\;{{hd}_{c}{\lbrack{i - 2}\rbrack}}}{z^{*}\left( {x,y} \right)}{\mathbb{e}}^{- {j{({{{\hat{\phi}}_{0}{\lbrack i\rbrack}} + {2\;\pi\;{{\hat{\Delta}}_{f}{\lbrack i\rbrack}}i\; T}})}}}} \right\}}},} \end{matrix}$ for c=μ_(x)[i−1] and

z(v_(i)[2], v_(i)[3]) = ∫₀^(T)𝕖^(j2 π h ω (τ, v_(i)[2], v_(i)[3])) 𝕕τ. Note that d_(μ) _(x) _([i−1)][i−2]=R_(p)[d_(x)[i−1]−μ_(x)[i−1]].

In the example of FIG. 4A, the flowchart 400A continues to module 412 where a survivor branch into each trellis state is determined. The calculation of the surviving branch entering each trellis state at stage i, i.e. the branch maximizing the metric Λ_(y)[i], y=0,1 is based on values for r[i], d_(x)[i−1],μ_(x)[i−1], and Λ_(x)[i−1], x=0,1. Once the surviving branch into each state yε{0,1} at stage i is determined, the starting state μ_(y)[i] is updated based on the start state of the surviving branch, and based on this value the parameter d_(y)[i] is updated according to d_(x)[i]=R_(p)[d_(μ) _(x) _([i])[i−1]+x].

In the example of FIG. 4A, the flowchart 400A continues to decision point 414 where it is determined whether i=L−1. If it is determined that i≠L−1 (414-N), then the flowchart 400A returns (recursively) to module 404 and continues as described previously. Thus, the process is repeated over each bit time until the final cumulative metric Λ_(X[L−)1] corresponding to all L bit transmissions is obtained for x=0,1. When it is determined that i=L−1 (414-Y), the recursion ends.

In the example of FIG. 4A, the flowchart 400A continues to decision point 416 where it is determined whether a metric 0 (e.g., Λ₀) is greater than a metric 1 (e.g., Λ₁). If it is determined that the metric 0 is greater than the metric 1, then the flowchart 400A continues to module 418 where the L−1 bits for the survivor path into State 0 at time L−1 are demodulated. In other words, if Λ₀[L−1]>Λ₁[L−1], the surviving path into State 0 at time L−1 is assumed to be the ML path. If, on the other hand, it is determined that the metric 0 is less than or equal to the metric 1, then the flowchart 400A continues to module 420 where the L−1 bits for the survivor path into State 0 at time L−1 are demodulated. In other words, the surviving path into State 1 at time L−1 is assumed to be the ML path. The bit sequence {tilde over (b)}[0], . . . , {tilde over (b)}[L−1] is demodulated based on the states x[i] along that ML path as {tilde over (b)}[i]=x[i], i.e. at time i, the bit {tilde over (b)}[i] corresponding to the survivor path into State 0 is μ₀[i+1] and the bit corresponding to the survivor path into State 1 is μ₁[i+1]. The bit sequences up to time i−1 corresponding to the survivor paths at time i are updated at each time interval and the demodulated bit sequence then corresponds to the ML trellis path at time L−1. After the bits for the survivor path are demodulated, the flowchart 400A ends.

FIG. 4B illustrates per-survivor processing with output at each stage of the trellis. This reduces memory requirements and delay by outputting the bit associated with the survivor path at time i for the state x[i]ε{0,1} with the largest metric Λ_(x)[i]. Specifically, at time i, the flowchart traces back some K of stages in the trellis and outputs the bit b[i−K] corresponding to the path for state x[i]ε{0,1} with the largest metric Λ_(x)[i] at time i. Typically, 1≦K≦L.

In the example of FIG. 4B, the modules 452-462 are quite similar to modules 402-412, so they are not re-described here. In the example of FIG. 4B, the flowchart 400B continues from the module 462 to the decision point 464 where it is determined whether a metric 0 greater than a metric 1. If it is determined that the metric 0 is greater than the metric 1, then the flowchart 400B continues to module 466 where the bit {tilde over (b)}[i−K] for the survivor path associated with State 0 at time i is output. If, on the other hand, it is determined that the metric 0 is less than the metric 1, then the flowchart 400B continues to module 468 where the bit {tilde over (b)}[i−K] for the survivor path associated with State 1 at time i is output.

In the example of FIG. 4B, the flowchart 400B continues to decision point 470 where it is determined whether i=L−1. If it is determined that i≠L−1 (470-N), then the flowchart 400B returns (recursively) to module 454 and continues as described previously. Thus, the process is repeated over each bit time. When it is determined that i=L−1 (470-Y), the recursion ends.

In the example of FIG. 4B, the flowchart 400B continues to module 472 where any remaining bits along the survivor path with the maximum metric are demodulated. For example, if you go back K stages, then you output K bits. In an illustrative embodiment, the bits b[L−K] to b[L−1] are output. After module 472, the flowchart 400B ends. FIG. 5 depicts a diagram 500 of an example of mapping an ML path to bit estimates.

In an alternate technique, you could trace back some random number K of stages in the trellis until the 2 bit values corresponding to both surviving paths in the trellis at time i are the same. This results in a random delay in the bit outputs.

FIG. 6 depicts a diagram 600 of an example of a trellis and survivor path computation between the i−1th and ith stage. In the example of FIG. 6, solid branches correspond to surviving paths (note there is only one entering each state at any trellis stage) and dashed branches corresponds to not yet decided survivor path entering State 0 at trellis stage i. If Λ₁[i−1]+λ_(1→0)[i]>Λ₀[i−1]+λ_(0→0)[i], the surviving branch entering State 0 in trellis section i starts in State 1 and ends in State 0. With the selection of this lower dashed branch as the surviving branch of the ML path, the parameters for the ML metric associated with the ith trellis stage are updated according to μ₀[i]=1, d₀[i]=R_(p)[d₁[i−1]+0], Λ₀[i]=Λ₁[i−1]+λ_(1→0)[i]. These parameters only depend on their previous values, i.e., a buffer of size two for each parameter is enough.

As stated earlier, the phase is slightly different over the first and last bit times since the phase over the first bit time does not have memory associated with the previous bit, and the phase over the last bit time does not have memory associated with a subsequent bit. We denote the phases corresponding to these first and last bit periods as ω_(s)(τ,b[0]) and ω_(e)(τ,b[L−1]), respectively. We similar define

z_(s)(b[0]) = ∫₀^(T)𝕖^(j 2 π h ω (τ, b[0])) 𝕕τ and z_(e)(b[L − 1]) = ∫₀^(T)𝕖^(j2π h ω (τ, b[L − 1])) 𝕕τ so that we can express the metrics for the first trellis stage as

$\begin{matrix} {{{\Lambda_{0}\lbrack 0\rbrack} = {{Re}\left\{ {{r\lbrack 0\rbrack}{z_{s}^{*}(0)}{\mathbb{e}}^{{- j}{{\hat{\phi}}_{0}{\lbrack 0\rbrack}}}} \right\}}},} \\ {{{\Lambda_{1}\lbrack 0\rbrack} = {{Re}\left\{ {{r\lbrack 0\rbrack}{z_{s}^{*}(1)}{\mathbb{e}}^{{- j}{{\hat{\phi}}_{0}{\lbrack 0\rbrack}}}} \right\}}},} \end{matrix}$ where e^(−j{circumflex over (φ)}) ⁰ ^([i]) is the initial phase estimate. In an implementation, the preamble processing will often take care of the first bit transmission and also provide an estimate of the phase offset φ₀. In this case z_(s)(0) and z_(s)(1) will never be used.

After updating Λ_(y)[L−1] for yε{0,1} according to above, the tail of the signal need to be added using z_(e)(y) as

$\begin{matrix} {{{\Lambda_{0}\left\lbrack {L - 1} \right\rbrack} = {{\Lambda_{0}\left\lbrack {L - 1} \right\rbrack} + {{Re}\left\{ {{r\lbrack L\rbrack}{z_{e}^{*}(0)}{\mathbb{e}}^{- {j{({{{\hat{\phi}}_{0}{\lbrack{L - 1}\rbrack}} + {2\;\pi\;{{\hat{\Delta}}_{f}{\lbrack{L - 1}\rbrack}}{({L - 1})}T}})}}}} \right\}}}},} \\ {{\Lambda_{1}\left\lbrack {L - 1} \right\rbrack} = {{\Lambda_{1}\left\lbrack {L - 1} \right\rbrack} + {{Re}{\left\{ {{r\lbrack L\rbrack}{z_{e}^{*}(1)}{\mathbb{e}}^{- {j{({{{\hat{\phi}}_{0}{\lbrack{L - 1}\rbrack}} + {2\;\pi\;{{\hat{\Delta}}_{f}{\lbrack{L - 1}\rbrack}}{({L - 1})}T}})}}}} \right\}.}}}} \end{matrix}$ The decisions on the last information bit is {tilde over (b)}[L−1]=x if Λ_(x)[L−1]>Λ_(y)[L−1] and the remaining bit decisions are made according to {tilde over (b)}[i]=μ_({tilde over (b)}[i+1])[i+1] for i=0,1, 2, . . . , L−2.

There are several techniques that can be used to obtain the time-varying phase estimate {circumflex over (φ)}(t)={circumflex over (φ)}₀+2π{circumflex over (Δ)}_(ƒ)t, including estimation algorithms applied to training sequences or preambles in the data prior to demodulation, data-driven estimation that is updated at each symbol time, or other techniques. Since the branch metric calculation described above can be updated based on the previous values of Λ_(y)[i], d_(y)[i], μ_(y)[i], a low complexity algorithm would have the property that the phase estimation algorithm can be updated based only on the values from the previous stage of the branch metric calculation, i.e. if {circumflex over (φ)}₀[i] denotes the phase offset estimate at time i, it is desirable from a low-complexity perspective that this estimate depend only on {circumflex over (φ)}₀[i−1], and similarly the frequency offset estimate at time i, {circumflex over (Δ)}_(ƒ)[i] should depend only on {circumflex over (Δ)}_(ƒ)[i−1].

FIGS. 7A and 7B depict flowcharts 700A and 700B of examples of methods for reducing ML detector complexity through per-survivor processing. The flowcharts 700A and 700B are similar to the flowcharts 400A and 400B (FIGS. 4A and 4B), though different exemplary computations may be in order at certain of the steps. Notably, FIGS. 7A and 7B respectively refer to real data functions at modules 709, 710 and 758, 760. Advantageously, the use of real data functions, instead of complex data functions, can significantly reduce the complexity of the computations.

In an illustrative embodiment, a transmitted phase can be expressed as a function of the accumulated bits and the last two bits as φ(τ+(n−1)T,a)=πhd[n−2]+2πhω(τ,a[n−1],a[n]), where d[n−2] and ω(τ,a[n−1],a[n]) are redefined as

${d\left\lbrack {n - 2} \right\rbrack} = {{\sum\limits_{i = 0}^{n - 2}\;{{a\lbrack i\rbrack}\omega\;\left( {\tau,{a\left\lbrack {n - 1} \right\rbrack},{a\lbrack n\rbrack}} \right)}} = {{{a\left\lbrack {n - 1} \right\rbrack}{q\left( {\tau + T} \right)}} + {{a\lbrack n\rbrack}{{q(\tau)}.}}}}$ where again a[i]ε{+1,−1} is the polar representation of the binary data. Then ρ[m_(i)]=e^(jπhd[i−2])z(a[i−1],a[i]).

Let us denote the phase estimate at time i by q[i]. We can obtain this estimate based on averaging over the current and last sample as

e^(j{circumflex over (φ)}) ⁰ =q[i]=αq[i−1]+(1−α)r[i]ρ*[{tilde over (m)}_(i)], where 0≦α≦1 is the forgetting factor for the previous sample. Similarly, let us denote the frequency offset estimate at time i by

${{\mathbb{e}}^{{j2}\;\pi\;{\hat{\Delta}}_{f}} = \frac{p\lbrack i\rbrack}{{p\lbrack i\rbrack}}},$ where p[i]=βp[i−1]+(1−β)r[i]ρ*[{tilde over (m)}_(i)]ρ[{tilde over (m)}_(i−1)]r*[i−1], and 0≦β≦1 is the forgetting factor. The branch metric for trellis section i in (6) can now be approximated by λ[i]=Re{r[i]ρ*[{tilde over (m)}_(i)]q*[i−1]}, where q[i] is the combined phase and frequency offset estimate according to

${q\lbrack i\rbrack} = {\left( {{\alpha\;{q\left\lbrack {i - 1} \right\rbrack}} + {\left( {1 - \alpha} \right){r\lbrack i\rbrack}{\rho^{*}\left\lbrack {\overset{\sim}{m}}_{i} \right\rbrack}}} \right){\frac{p\left\lbrack {i - 1} \right\rbrack}{{p\left\lbrack {i - 1} \right\rbrack}}.}}$

Define also δ_(y)[i]=hd_(y)[i−1] and u[i]=r[i]ρ*[{tilde over (m)}_(i)]=r[i]e^(−jπδ[i−1])z*(a[i−1],a[i]). These calculations require multiplications of complex numbers, which can be simplified to additions of real numbers as follows. Let zε[−1,+1) denote the angle of the complex number z divided by i, such that z=e^(jπ z) . Further, define r,ū, q, p, such that r=e^(jπ r) ,u=e^(jπū),q=e^(jπ q) ,p=e^(jπ p) . This means that ū[i]= r[i]−δ[i−1]− z(a[i−1],a[i]), λ[i]=cos(π(ū[i]− q[i−1])).

However, some further modifications are needed for the updates of the phase and frequency offset estimation q[i]. Consider two complex-valued numbers with unit amplitude, e^(−jπa) and e^(−jπb) for −1≦a≦+1 and −1≦b≦+1. The weighted sum of these numbers can then be approximated according to γe^(jπa)+(1−γ)e^(jπb)≈e^(jπ(a+(1−y)[b−a]) ⁻¹ ⁺¹ ⁾, where parameter 0≦y≦1 acts as a weighting factor and [b−a]⁻¹ ⁺¹=mod(b−a−1,2)−1, which means that the number inside the brackets is wrapped around within [−1,+1). This is easily implemented in fixed point arithmetic by using one bit for the integer part and the rest of the bits for the fractional part together with wrapping instead of saturation, e.g., [0.5+0.7]⁻¹ ⁺¹=−0.8. This also means that the modulo p operator R_(p)[c] is no longer needed. According to this approximation the recursive updates for the phase and frequency offset estimation can be simplified to q[i]=[ q[i−1]+(1−α)[ū[i]− q[i−1]]⁻¹ ⁺¹ + p[i−1]]⁻¹ ⁺¹, p[i]=[ p[i−1]+(1−β)[ū[i]−ū[i−1]− p[i−1]]⁻¹ ⁺¹]⁻¹ ⁺¹. Note also that the normalization of p is no longer necessary, since the operations are performed in phase domain.

The updates of Λ[i], δ[i], μ[i], ū[i], q[i], p[i] through the trellis and the decisions on the bits {tilde over (b)}[i] can be explained by the following pseudo code:

for i = 1 : L (for all trellis sections)  for y = 0 : 1 (for all ending states)   for x = 0 : 1 (for all starting states)    ū′_(x) = [ r[i] − δ_(x)[i − 1] − z(x,y)]⁻¹ ⁺¹    Λ′_(x) = Λ_(x)[i − 1] + cos(π(ū′_(x) − q _(x)[i − 1]))   end   if Λ′₁ > Λ′₀ (finding the winning starting state)    μ_(y)[i] = 1    δ_(y)[i] = [δ₁[i − 1] + h]⁻¹ ⁺¹    Λ_(y)[i] = Λ′₁    ū_(y)[i] = ū′₁     q _(y)[i] = [ q ₁[i − 1] + (1 − α)[ū_(y)[i] − q ₁[i − 1]]⁻¹ ⁺¹ + p ₁[i − 1]]⁻¹ ⁺¹     p _(y)[i] = [ p ₁[i − 1] + (1 − β)[ū_(y)[i] − ū₁[i − 1] − p ₁[i − 1]]⁻¹ ⁺¹]⁻¹ ⁺¹   else    μ_(y)[i] = 0    δ_(y)[i] = [δ₀[i − 1] − h]⁻¹ ⁺¹    Λ_(y)[i] = Λ′₀    ū_(y)[i] = ū′₀     q _(y)[i] = [ q ₀[i − 1] + (1 − α)[ū_(y)[i] − q ₀[i − 1]]⁻¹ ⁺¹ + p ₀[i − 1]]⁻¹ ⁺¹     p _(y)[i] = [ p ₀[i − 1] + (1 − β)[ū_(y)[i] − ū₀[i − 1] − p ₀[i − 1]]⁻¹ ⁺¹]⁻¹ ⁺¹   end  end  if Λ₁[i] > Λ₀[i] (trace back decision by K=1 and normalization of metric)   Λ₀[i] = Λ₀[i] − Λ₁[i]   Λ₁[i] = Λ₁[i] − Λ₁[i] = 0   {circumflex over (b)}[i − 1] = μ₁[i]  else   Λ₁[i] = Λ₁[i] − Λ₀[i]   Λ₀[i] = Λ₀[i] − Λ₀[i] = 0   {tilde over (b)}[i − 1] = μ₀[i]  end end

Note that the above parameters only depend on their previous values, i.e., a buffer of size two for each parameter is enough. Only μ_(y)[i] needs to be saved for all yε{0,1} and i=1, 2, . . . , L−1 to be able to track the surviving path through the entire trellis, but on the other hand, μ_(y)[i] only contains 1 bit. The normalization of the metric Λ_(y)[i] is just to keep it from overflowing. The length of the trace back K to make decisions on the data bits can also be made longer than one symbol which may lead to some performance benefit.

In DPSK (also referred to as D-MPSK) the transmitted complex symbols are given by s[i]=s[i−1]e^(jπφ[i]) where φ[i]εS is the data phase carrying the m=log₂(M) information bits

${S \in \left\{ \frac{2\; k}{M} \right\}},{k = 0},1,\ldots\mspace{14mu},{M - 1.}$ In an illustrative embodiment, the information bits are mapped to the phases using Gray mapping. The first symbol s[0]=e^(jπφ[0]) is transmitted with an arbitrary phase φ[0]ε[−1,+1). The transmitted symbols can also be written as s[i]=e^(jπ(Φ[i]+φ[0]))=e^(jπΦ[i])e^(jπφ[0]), where Φ[i]εS denotes the coherent data phases with

${\Phi\lbrack i\rbrack} = {{\sum\limits_{n = 1}^{i}{{\phi\lbrack n\rbrack}\mspace{14mu}{and}\mspace{14mu}{\Phi\lbrack 0\rbrack}}} = 0.}$ Note that φ[i]=Φ[i]−Φ[i−1], for i=1, 2, . . . , L. The transmitted baseband analog signal is given by

${{s(t)} = {{\sum\limits_{i = 1}^{L}{{s\lbrack i\rbrack}{h\left( {t - {iT}} \right)}}} = {{\mathbb{e}}^{{j\pi\phi}{\lbrack 0\rbrack}}{\sum\limits_{i = 1}^{L}{{\mathbb{e}}^{{j\pi\Phi}{\lbrack i\rbrack}}{h\left( {t - {iT}} \right)}}}}}},$ where h(t) is the transmit pulse shaping and T is the data symbol duration. The received base band signal is

$\begin{matrix} {{r(t)} = {{\sum\limits_{i = 0}^{L}{{s\lbrack i\rbrack}{h\left( {t - \tau - {iT}} \right)}{\mathbb{e}}^{{j\pi}{({{2\Delta\; t} - {2{\Delta\tau}}})}}}} + {n(t)}}} \\ {{= {{\sum\limits_{i = 0}^{L}{{\mathbb{e}}^{{j\pi\Phi}{\lbrack i\rbrack}}{h\left( {t - \tau - {iT}} \right)}{\mathbb{e}}^{{j\pi}{({{2\Delta\; t} + \theta})}}}} + {n(t)}}},} \end{matrix}$ where τ is the unknown propagation delay, Δ is the unknown frequency offset, θ=φ[0]−2Δτ is the unknown phase offset, and n(t) is the additive white Gaussian noise with two sided power spectral density

$\frac{N_{0}}{2}.$

DPSK modulation can be modeled by a trellis with M states y=0, 1, . . . , M−1, where the reference symbol going into state y is

$z = {{\mathbb{e}}^{{j\pi}\frac{2y}{M}}.}$ There may or may not be unknown parameters associated with, for example, the signal. The DPSK signal can be demodulated by finding the maximum likelihood path through the trellis associated with the received signal, as has been described previously for GFSK (e.g., with reference FIG. 1).

In an illustrative embodiment, the transmit pulse can be truncated by using a window w(t) that is non-zero except N symbol intervals centered around zero

${\overset{\sim}{h}(t)} = \left\{ {\begin{matrix} {{h(t)}{w(t)}} & {{{- {NT}}/2} \leq t \leq {{NT}/2}} \\ 0 & {elsewhere} \end{matrix}.} \right.$ Using {tilde over (h)}(t) as the transmit pulse, the received signal becomes

${r(t)} = {{\sum\limits_{i = 0}^{L - 1}{{\mathbb{e}}^{{j\pi\Phi}{\lbrack i\rbrack}}{\overset{\sim}{h}\left( {t - \tau - {iT}} \right)}{\mathbb{e}}^{{j\pi}{({{2\Delta\; t} + \theta})}}}} + {{n(t)}.}}$ This signal is averaged over the ith bit period to obtain

${r\lbrack i\rbrack} = {\frac{1}{N}{\sum\limits_{k = 0}^{N - 1}{{r\left( {\left( {i + {k/N}} \right)T} \right)}.}}}$ Assuming perfect timing, the demodulation can be performed by a trellis search on a fully connected trellis with M states for the symbol z[i] that maximizes the maximum likelihood metric Λ[L−1] for L−1 symbols given by

${\Lambda\left\lbrack {L - 1} \right\rbrack} = {{Re}{\left\{ {\sum\limits_{i = 0}^{L - 1}{{r\lbrack i\rbrack}{z^{*}\lbrack i\rbrack}{q^{*}\lbrack i\rbrack}}} \right\}.}}$ Using the same notation as for GFSK, described previously, define z, r,ū, q, p, such that z=e^(jπ z) ,r=e^(jπ r) ,u=e^(jπū),q=e^(jπ q) ,p=e^(jπ p) which means that z(y)=[2y/M]⁻¹ ⁺¹.

The updates of Λ[i], μ[i], ū[i], q[i], p[i] through the trellis and the decisions on the phases {circumflex over (φ)}[i] can be explained by the following pseudo code.

for i = 1:L (for all trellis sections) for y = 0:M − 1 (for all ending states) for x = 0:M − 1 (for all starting states) ${\overset{\_}{u}}_{x}^{\prime} = \left\lbrack {{\overset{\_}{r}\lbrack i\rbrack} - {\overset{\_}{z}(y)}} \right\rbrack_{- 1}^{+ 1}$ $\Lambda_{x}^{\prime} = {{\Lambda_{x}\left\lbrack {i - 1} \right\rbrack} + {\cos\left( {\pi\left( {{\overset{\_}{u}}_{x}^{\prime} - {{\overset{\_}{q}}_{x}\left\lbrack {i - 1} \right\rbrack}} \right)} \right)}}$ end $x^{*} = {\arg\;{\max\limits_{x}\;{\Lambda_{x}^{\prime}\mspace{14mu}\left( {{winning}\mspace{14mu}{starting}\mspace{14mu}{state}} \right)}}}$ μ_(y)[i] = x^(*) Λ_(y)[i] = Λ_(x^(*))^(′) ${{\overset{\_}{u}}_{y}\lbrack i\rbrack} = {\overset{\_}{u}}_{x^{*}}^{\prime}$ ${{\overset{\_}{q}}_{y}\lbrack i\rbrack} = \left\lbrack {{{\overset{\_}{q}}_{x^{*}}\left\lbrack {i - 1} \right\rbrack} + {\left( {1 - \alpha} \right)\left\lbrack {{{\overset{\_}{u}}_{y}\lbrack i\rbrack} - {{\overset{\_}{q}}_{x^{*}}\left\lbrack {i - 1} \right\rbrack}} \right\rbrack}_{- 1}^{+ 1} + {{\overset{\_}{p}}_{x^{*}}\left\lbrack {i - 1} \right\rbrack}} \right\rbrack_{- 1}^{+ 1}$ ${{\overset{\_}{p}}_{y}\lbrack i\rbrack} = \left\lbrack {{{\overset{\_}{p}}_{x^{*}}\left\lbrack {i - 1} \right\rbrack} + {\left( {1 - \beta} \right)\left\lbrack {{{\overset{\_}{u}}_{y}\lbrack i\rbrack} - {{\overset{\_}{u}}_{x^{*}}\left\lbrack {i - 1} \right\rbrack} - {{\overset{\_}{p}}_{x^{*}}\left\lbrack {i - 1} \right\rbrack}} \right\rbrack}_{- 1}^{+ 1}} \right\rbrack_{- 1}^{+ 1}$ end $y^{*} = {\arg\;{\max\limits_{y}{{\Lambda_{y}\lbrack i\rbrack}\mspace{14mu}\left( {{winning}\mspace{14mu}{ending}\mspace{14mu}{state}} \right)}}}$ for y = 0:M − 1 (normalize the metric to prevent overflow) Λ_(y)[i] = Λ_(y)[i] − Λ_(y^(*))[i] end for k = i : −1:i − K (trace back in the trellis) l = mod(y^(*) − μ_(y^(*))[k], M) y^(*) = μ_(y^(*))[k] end ${\hat{\phi}\left\lbrack {i - K} \right\rbrack} = {\overset{\_}{z}\lbrack l\rbrack}$ end

K≦0 is the trace back length that will also affect the delay of the decision. To even further reduce the complexity the starting state x can be put to the winning ending state from the previous trellis section, i.e.,

$x = {\arg\mspace{11mu}{\max\limits_{y}\;{{\Lambda_{y}\left\lbrack {i - 1} \right\rbrack}.}}}$ That will reduce the innermost for-loop with a factor of M.

As used herein, the term “embodiment” means an embodiment that serves to illustrate by way of example but not limitation.

It will be appreciated to those skilled in the art that the preceding examples and embodiments are exemplary and not limiting to the scope of the present invention. It is intended that all permutations, enhancements, equivalents, and improvements thereto that are apparent to those skilled in the art upon a reading of the specification and a study of the drawings are included within the true spirit and scope of the present invention. It is therefore intended that the following appended claims include all such modifications, permutations and equivalents as fall within the true spirit and scope of the present invention. 

1. A method comprising: demodulating a received signal in a signal receiver by determining estimates of unknown parameters of the received signal by using a weighted addition of real numbers and without performing an operation on a complex number; selecting a maximum likelihood path through a trellis based on the estimates; and mapping the maximum likelihood path to an output bit sequence.
 2. A method comprising: in a signal receiver, demodulating a received signal by sampling the signal over a bit period; updating time-variable phase parameters by using a weighted addition of real numbers and without using multiplication of a complex number; computing a branch metric function associated with bits of the received signal received up to a current time; finding a trellis state that maximizes a branch metric of the trellis, wherein the branch metric is based on said branch metric function; and determining an estimate for the transmitted data based on the trellis state that maximizes the branch metric.
 3. The method of claim 2, further comprising initializing a trellis stage.
 4. The method of claim 2, further comprising, recursively, incrementing a trellis stage; sampling and averaging the received signal; updating data functions; and computing a metric based on recursive updates of the data functions and the time-variable phase parameters.
 5. The method of claim 4, wherein the data functions include real data functions and not complex data functions.
 6. The method of claim 4, further comprising, recursively estimating time-varying phase parameters.
 7. The method of claim 4, further comprising, recursively estimating phase offsets and frequency offsets.
 8. The method of claim 4, further comprising: determining, recursively, a survivor branch into each trellis state; determining whether the branch metric is greater for a first state or a second state; demodulating bits for a survivor path into the first state if the branch metric is greater for the first state than for the second state; demodulating bits for a survivor path into the second state if the branch metric is not greater for the first state than for the second state.
 9. The method of claim 4, further comprising, recursively: determining a survivor branch into each trellis state; determining whether the branch metric is greater for a first state or a second state; demodulating a bit associated with a survivor path into the first state if the branch metric is greater for the first state than for the second state; demodulating a bit associated with a survivor path into the second state if the branch metric is not greater for the first state than for the second state.
 10. The method of claim 9, further comprising demodulating any remaining bits along the survivor path into the first state.
 11. The method of claim 1, wherein the unknown parameters comprise a parameter that is a function of a phase of the received signal or a parameter that is a function of a frequency of the received signal.
 12. The method of claim 11, wherein the received signal is a GFSK signal or a DPSK signal.
 13. The method of claim 1, wherein the unknown parameters comprise a phase offset and a frequency offset.
 14. A method comprising: in a signal receiver, determining an estimate of an unknown parameter of a received signal by using a weighted addition of real numbers and without performing an operation on a complex number; and demodulating the received signal based on the estimate.
 15. The method of claim 14, wherein the unknown parameter comprises a parameter that is a function of a phase of the received signal or a parameter that is a function of a frequency of the received signal.
 16. The method of claim 15, wherein the received signal is a GFSK signal or a DPSK signal.
 17. The method of claim 14, wherein the unknown parameter comprises a phase offset or a frequency offset.
 18. The method of claim 9, further comprising demodulating any remaining bits along the survivor path into the second state. 